package Assignment;

import java.util.Scanner;

/*我国的居民身份证号码，由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法，
 并在主方法中调用方法测试结果。规则为：号码为18位，不能以数字0开头，前17位只可以是数字，最后一位可以是数字或者大写字母X。*/
public class Test5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入身份证：");
        String str = scanner.next();

        System.out.println(Estimate(str));

    }
    //判断身份证合法
    public static boolean Estimate(String str){
        if (str.length() != 18){
            return false;
        } else if (str.charAt(0) == '0') {
            return false;
        } else if (EmNumber(str.substring(0,16))&&(EmNumber(str.substring(17))||str.charAt(17) == 'X')) {
            return false;
        }
        return true;
    }
    //判断是否为数字
    public static boolean EmNumber(String str){
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c<='0'|| c>='9'){
                return false;
            }
        }
        return true;
    }

}
